package controleur;

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.nio.channels.ServerSocketChannel;

import vue.Fenetre;

import model.UserClientDelegate;
import model.eConf;

public class CanalUpdateVueConf extends Thread {
	
	private Socket sock;
	private ServerSocketChannel serverSocket;
	private boolean fin;
	private Fenetre fenetre;
	private eConf eConf;
	
	public CanalUpdateVueConf(Fenetre fenetre, eConf eConf) {
		try {
			this.fenetre = fenetre;
			this.eConf = eConf;
			serverSocket = ServerSocketChannel.open();
			serverSocket.socket().bind(new InetSocketAddress(2222));
		} catch (Exception e) {
			e.getStackTrace();
		}
	}

	public void run() {
//		while (eConf.isClientIsOn()){
		fin = false;
				while (!fin){
				 try {			   
					 System.out.println("Attente d'une connexion serverSocket.accept()");
						sock =  serverSocket.accept().socket();
						System.out.println("Après serverSocket.accept()");
						
				    	 Object[][] value = null;
					 
					 
				   // Reception du tableau
				   InputStream is = sock.getInputStream();
				   ObjectInputStream ois = new ObjectInputStream(is);

				   //Parcours (lecture) du tableau reçu taille du prochain tableau
					   Object valueTailleTab = ois.readObject();
					   int nbLignes = new Integer(valueTailleTab.toString());
					   System.out.println("Réponse du serveur pour la taille tab Update Vue Conf: "+nbLignes);
				  //Parcours (lecture) du tableau reçu : roleUser
					   String roleUser = (String) ois.readObject();
					   
					   System.out.println("Réponse du serveur role User pour Update Vue Conf: "+roleUser);	
				   				   
				   value = new Object[nbLignes][3];
				   
				   //Parcours (lecture) du tableau reçu
			         for (int i = 0; i < nbLignes; i++) {
			      	   for (int j = 0; j < 3; j++) {
//			      	   value = (Object[][]) ois.readObject();
			      		 Object valueRead = ois.readObject();
			      	   value[i][j] = valueRead;
			      	   System.out.println("Données dans le tableau :" + valueRead);
			      	   }
			         }
			         
			      // Update la vue IHM
			         fenetre.afficheBodyVuConference(roleUser, value, eConf.getIdConferenceActuel());
				   
			         
				   
				 }catch (Exception e) {
				 System.out.println(" ---> Erreur en creant le flux de entré : " + e.getStackTrace());
				 }
				}	
			}

}
